package com.wiener.core.dao;

import java.math.BigDecimal;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import oracle.jdbc.OracleTypes;

import org.apache.log4j.Logger;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.orm.hibernate3.SessionFactoryUtils;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import com.wiener.core.beans.Academica;
import com.wiener.core.beans.Historico;
import com.wiener.core.beans.Notas;
import com.wiener.core.beans.Obligaciones;
import com.wiener.core.commons.Constants;
import com.wiener.core.domain.Atencion;
import com.wiener.core.domain.Cliente;
import com.wiener.core.domain.ClienteAux;
import com.wiener.core.domain.Concepto;
import com.wiener.core.domain.Entidad;
import com.wiener.core.domain.EntidadAux;
import com.wiener.core.domain.ObligacionPago;
import com.wiener.core.domain.Recibo;
import com.wiener.core.jdbc.ExecuteProcedure;

@Repository
public class ObligacionPagoDAOImpl extends HibernateDaoSupport implements
		ObligacionPagoDAO {

	private static final Logger LOGGER = Logger
			.getLogger(ObligacionPagoDAOImpl.class);

	private JdbcTemplate jdbcTemplate;
	private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
	private DataSource dataSource;
	private ExecuteProcedure execSp;
	private Connection connection ;
	private CallableStatement callableStatement = null;
	private ResultSet rs;

	@Autowired
	public ObligacionPagoDAOImpl(SessionFactory sessionFactory) {
		setSessionFactory(sessionFactory);
	}
	
	public Connection getConexion() throws Exception{
		dataSource = SessionFactoryUtils.getDataSource(getSession()
				.getSessionFactory());
		if (connection == null){
			connection = dataSource.getConnection();
		}	
		return connection;
		
	}
	

	public List<Entidad> obtenerEmpresas() throws Exception {

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_EMPRESA,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<ObligacionPago> listaObligaciones() {
		final List<ObligacionPago> list = new ArrayList<ObligacionPago>();
		final ObligacionPago pago1 = new ObligacionPago(1, "51010306",
				"PENSION MAESTR. VIRTUAL", "2", "20/12/2012", "20131U", "175",
				"", "175");
		list.add(pago1);
		final ObligacionPago pago2 = new ObligacionPago(2, "51010306",
				"PENSION MAESTR. VIRTUAL", "3", "05/01/2013", "20131U", "175",
				"", "175");
		list.add(pago2);
		return list;
	}

	
	public List<Entidad> obtenerCaptaciones() throws Exception {
		// TODO Auto-generated method stub
		List<Entidad> lista = new ArrayList<Entidad>();
		Entidad entidad = new Entidad();
		entidad.setCodigo("1");
		entidad.setNombre("Normal");
		lista.add(entidad);
		entidad = new Entidad();
		entidad.setCodigo("2");
		entidad.setNombre("Post Grado");
		lista.add(entidad);

		return lista;
	}

	
	public List<Entidad> obtenerSexo() throws Exception {
		// TODO Auto-generated method stub

		List<Entidad> lista = new ArrayList<Entidad>();
		Entidad entidad = new Entidad();
		entidad.setCodigo("M");
		entidad.setNombre("Masculino");
		lista.add(entidad);
		entidad = new Entidad();
		entidad.setCodigo("F");
		entidad.setNombre("Feminino");
		lista.add(entidad);

		return lista;
	}

	
	public List<Entidad> obtenerCategorias() throws Exception {
		// TODO Auto-generated method stub

		List<Entidad> lista = new ArrayList<Entidad>();
		Entidad entidad = new Entidad();
		entidad.setCodigo("1");
		entidad.setNombre("Visita");
		lista.add(entidad);
		entidad = new Entidad();
		entidad.setCodigo("2");
		entidad.setNombre("Llamada");
		lista.add(entidad);

		return lista;
	}

	
	public List<Entidad> obtenerMedioAtencion() throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_MEDIO_ATENCION, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerModoAcercamiento() throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_MODO_ACERCAMIENTO, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerDescripcionAcercamiento(String medio)
			throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_MEDIO,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_DESCRIPCION_ACERCAMIENTO, paramsInput,
					paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_MEDIO, medio);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerDetalleAcercamiento(String medio)
			throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_MEDIO,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_DETALLE_ACERCAMIENTO, paramsInput,
					paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_MEDIO, medio);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerPaises() throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_PAIS,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerCargos(String as_empresa) throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_EMPRESA,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_CARGO,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_EMPRESA, as_empresa);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<EntidadAux> obtenerCarrerasSugeridas() throws Exception {

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<EntidadAux> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new EntidadAux()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_CARRERA_SUGERIDA, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerInstitucionProcedencia() throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_INSTITUCION_PROCEDE, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerUbigeo(String tipo, String ubigeo)
			throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_TIPO,
					OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter(Constants.AS_UBIGEO,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_LISTA_UBIGEO, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_TIPO, tipo);
			inputs.put(Constants.AS_UBIGEO, ubigeo);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<ClienteAux> obtenerCliente(String as_dni, String as_ap,
			String as_am, String as_nombres) throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<ClienteAux> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_DNI,
					OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter(Constants.AS_AP,
					OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter(Constants.AS_AM,
					OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter(Constants.AS_NOMBRES,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new ClienteAux()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_BUSQUEDA,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_DNI, as_dni);
			inputs.put(Constants.AS_AP, as_ap);
			inputs.put(Constants.AS_AM, as_am);
			inputs.put(Constants.AS_NOMBRES, as_nombres);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Cliente> cargaCliente(String cliente_informes) throws Exception {
		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Cliente> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_CLIENTE,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Cliente()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_CARGA_CLIENTE_INF, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_CLIENTE, cliente_informes);

			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Atencion> cargaAtencion(String cliente_informes)
			throws Exception {
		// TODO Auto-generated method stub

	
		List<Atencion> lista = null;
		try {
		
			String getDBUSERByUserIdSql = "{call UP100.PKG_EVIRTUAL_PROSPECTO.sp_carga_atencion_inf(?,?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(1, cliente_informes);
			callableStatement.registerOutParameter(2, OracleTypes.CURSOR);
			
			callableStatement.executeUpdate();
			rs =  (ResultSet) callableStatement.getObject(2);;
			lista = new ArrayList<Atencion>();
			while (rs.next()) {
				Atencion atencion = new Atencion(rs.getString("FLAG_CAPTACION"), rs.getString("CLIENTE"),
						rs.getString("INSTITUCION"), rs.getString("CARRERA"), rs.getString("CARRERA_DESCRIPCION"),
						rs.getString("PERIODO"), rs.getString("MES"), rs.getString("pkcodigo"),
						rs.getString("modalidad"), rs.getString("MODALIDAD_DESCRIPCION"), rs.getString("TURNO"),
						rs.getString("SECCION"), rs.getString("TIPO_DESCUENTO"), rs.getString("DESCUENTO"),
						rs.getString("MOTIVODESCUENTO"), rs.getString("mes_inicio"), rs.getString("NIVEL_INICIO"),
						rs.getString("TIPO_ACERCAMIENTO"), rs.getString("FICHA"), rs.getString("MATRICULA"),
						rs.getString("USUARIO_CREACION"), rs.getString("SUB_MODALIDAD"), rs.getString("FECHA_MODIFICACION"),
						rs.getString("USUARIO_MODIFICACION"), rs.getString("ATENCION"), rs.getString("FECHA_CREACION"),
						rs.getString("SEDE"), rs.getString("TIPO_PERSONA"), rs.getString("FECHA_CAPTACION"),
						rs.getString("aprobacion"), rs.getString("MODALIDAD"), rs.getString("ENCUESTA"));
				lista.add(atencion);
			}
			
			

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerTipoColegios() throws Exception {

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_TIPO_COLEGIO, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerColegios() throws Exception {

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_LISTA_COLE,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerInstitucion1() throws Exception {

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_INSTITUCION1, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerCarreraInst1(String as_institucion)
			throws Exception {

		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_INSTITUCION,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_CARRERA_INST1, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_INSTITUCION, as_institucion);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerPeriodo1(String as_institucion)
			throws Exception {

		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_INSTITUCION,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_PERIODO1,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_INSTITUCION, as_institucion);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerPeriodoDet1(String as_periodo,
			String as_institucion) throws Exception {

		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_PEDIODO,
					OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter(Constants.AS_INSTITUCION,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource,
					Constants.SP_PERIODO_DET1, paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_PEDIODO, as_periodo);
			inputs.put(Constants.AS_INSTITUCION, as_institucion);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerModa1(String as_institucion) throws Exception {

		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_INSTITUCION,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_MODA1,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_INSTITUCION, as_institucion);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerCodMod1(String as_institucion) throws Exception {

		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_INSTITUCION,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_CODMOD1,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_INSTITUCION, as_institucion);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerTurno1() throws Exception {

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_TURNO1,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerTurno2(String as_carrera, String as_turno,
			String as_mes) throws Exception {

		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_CARRERA,
					OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter(Constants.AS_TURNO,
					OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter(Constants.AS_MES,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_TURNO2,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_CARRERA, as_carrera);
			inputs.put(Constants.AS_TURNO, as_turno);
			inputs.put(Constants.AS_MES, as_mes);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerDescuento1() throws Exception {

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_DESCUENTO1,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerDescuento2(String as_cliente) throws Exception {

		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_CLIENTE,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_DESCUENTO2,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_CLIENTE, as_cliente);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public List<Entidad> obtenerModalidad1(String as_modalidad)
			throws Exception {

		// TODO Auto-generated method stub

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		List<Entidad> lista = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter(Constants.AS_MODALIDAD,
					OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new Entidad()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_MODALIDAD1,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put(Constants.AS_MODALIDAD, as_modalidad);
			results = execSp.executeSp(inputs);
			lista = ExecuteProcedure.retornaLista(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return lista;

	}

	
	public String usfCliente() throws Exception {

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		String retorna = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			// paramsInput.add(new SqlParameter(Constants.,
			// OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,
					OracleTypes.CURSOR, new String()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_USF_CLIENTE,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			// inputs.put(Constants.PS_POSTULANTE, psPostulante);
			results = execSp.executeSp(inputs);
			retorna = ExecuteProcedure.retornaString(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return retorna;

	}

	
	public void manteInformes(String as_opcion, String LS_cliente,
			String LS_apellido_paterno, String LS_apellido_materno,
			String LS_nombres, String LS_sexo, String LS_direccion,
			String LS_telefono, Date LS_fecha_nacimiento, String LS_distrito,
			String LS_email, String LS_documento_identidad,
			String LS_colegio_anio_termino, String LS_institucion_procedencia,
			String LS_modo_Acercamiento, String LS_grado,
			String LS_numero_carnet, String LS_colegio,
			String LS_institucion_anio_egreso, String LS_tipo_colegio,
			String LS_empresa, String LS_ruc, String LS_alumno_recomienda,
			String LS_detalle_acercamiento, String LS_persona_ref,
			String LS_telefono_ref, String LS_tipo_captacion,
			String LS_carrera_sugerida, String LS_obs_traslado,
			String LS_telefono2, String LS_tipo_informe,
			String LS_esextranjero, String LS_espais, String LS_medio_atencion,
			String LS_proextranjero, String LS_propais, String LS_anio_exp_emp,
			String LS_obs_emp, String LS_puesto) throws Exception {

		List<SqlParameter> paramsInput = null;
		List<SqlOutParameter> paramsOutput = null;
		Map<String, Object> inputs = null;
		Map<String, Object> results = null;
		String retorna = null;
		try {
			dataSource = SessionFactoryUtils.getDataSource(getSession()
					.getSessionFactory());
			paramsInput = new ArrayList<SqlParameter>();
			paramsInput.add(new SqlParameter("as_opcion", OracleTypes.CHAR));
			paramsInput.add(new SqlParameter("LS_cliente", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_apellido_paterno",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_apellido_materno",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_nombres", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_sexo", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_direccion",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_telefono",OracleTypes.VARCHAR));			
			paramsInput.add(new SqlParameter("LS_fecha_nacimiento",OracleTypes.DATE));
			paramsInput.add(new SqlParameter("LS_distrito",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_email", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_documento_identidad",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_colegio_anio_termino",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_institucion_procedencia",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_modo_Acercamiento",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_grado", OracleTypes.NUMBER));
			paramsInput.add(new SqlParameter("LS_numero_carnet", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_colegio", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_institucion_anio_egreso",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_tipo_colegio",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_empresa", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_ruc", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_alumno_recomienda",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_detalle_acercamiento",	OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_persona_ref",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_telefono_ref",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_tipo_captacion",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_carrera_sugerida",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_obs_traslado",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_telefono2",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_tipo_informe",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_esextranjero",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_espais", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_medio_atencion",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_proextranjero",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_propais", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_anio_exp_emp",OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_obs_emp", OracleTypes.VARCHAR));
			paramsInput.add(new SqlParameter("LS_puesto", OracleTypes.VARCHAR));

			paramsOutput = new ArrayList<SqlOutParameter>();
			//paramsOutput.add(new SqlOutParameter(Constants.P_CURSOR,OracleTypes.CURSOR, new String()));

			execSp = new ExecuteProcedure(dataSource, Constants.SP_MANTE_INFORMES,
					paramsInput, paramsOutput);
			inputs = new HashMap<String, Object>();
			inputs.put("as_opcion", as_opcion);
			inputs.put("LS_cliente", LS_cliente);
			inputs.put("LS_apellido_paterno", LS_apellido_paterno);
			inputs.put("LS_apellido_materno", LS_apellido_materno);
			inputs.put("LS_nombres", LS_nombres);
			inputs.put("LS_sexo", LS_sexo);
			inputs.put("LS_direccion", LS_direccion);
			inputs.put("LS_telefono", LS_telefono);			
			inputs.put("LS_fecha_nacimiento", LS_fecha_nacimiento);
			inputs.put("LS_distrito", LS_distrito);
			inputs.put("LS_email", LS_email);
			inputs.put("LS_documento_identidad", LS_documento_identidad);
			inputs.put("LS_colegio_anio_termino", LS_colegio_anio_termino);
			inputs.put("LS_institucion_procedencia", LS_institucion_procedencia);
			inputs.put("LS_modo_Acercamiento", LS_modo_Acercamiento);

			// valores null
			inputs.put("LS_grado", LS_grado);
			inputs.put("LS_numero_carnet", LS_numero_carnet);

			inputs.put("LS_colegio", LS_colegio);
			inputs.put("LS_institucion_anio_egreso", LS_institucion_anio_egreso);
			inputs.put("LS_tipo_colegio", LS_tipo_colegio);
			inputs.put("LS_empresa", LS_empresa);
			inputs.put("LS_ruc", LS_ruc);
			inputs.put("LS_alumno_recomienda", LS_alumno_recomienda);
			inputs.put("LS_detalle_acercamiento", LS_detalle_acercamiento);

			// valores null
			inputs.put("LS_persona_ref", LS_persona_ref);
			inputs.put("LS_telefono_ref", LS_telefono_ref);

			inputs.put("LS_tipo_captacion", LS_tipo_captacion);
			inputs.put("LS_carrera_sugerida", LS_carrera_sugerida);
			inputs.put("LS_obs_traslado", LS_obs_traslado);

			inputs.put("LS_telefono2", LS_telefono2);

			inputs.put("LS_tipo_informe", LS_tipo_informe);
			inputs.put("LS_esextranjero", LS_esextranjero);
			inputs.put("LS_espais", LS_espais);
			inputs.put("LS_medio_atencion", LS_medio_atencion);

			inputs.put("LS_proextranjero", LS_proextranjero);
			inputs.put("LS_propais", LS_propais);
			inputs.put("LS_anio_exp_emp", LS_anio_exp_emp);
			inputs.put("LS_obs_emp", LS_obs_emp);
			inputs.put("LS_puesto", LS_puesto);
			results = execSp.executeSp(inputs);
			retorna = ExecuteProcedure.retornaString(results);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

	}

	
	public void manteAteInformes(String as_opcion, String as_atencion,
			String as_cliente, String as_institucion, String as_flag_captacion,
			String ad_fecha_modificacion, String as_usuario_modificacion,
			String as_tipo_acercamiento, String as_turno,
			String ad_fecha_creacion, String as_sede, String as_seccion,
			String as_tipo_persona, String as_matricula,
			String ad_fecha_captacion, String as_aprobacion, String as_carrera,
			String as_modalidad, String as_nivel, String as_usuario_creacion,
			String as_atencion_informes_periodo, String as_ficha,
			String as_encuesta, String as_sub_modalidad,
			String as_tipo_descuento, String as_descuento,
			String as_motivodescuento, String as_mes, String as_pkcodigo,
			String as_mes_inicio) throws Exception {
		// TODO Auto-generated method stub

	}

	
	/*Segunda Parte*/
	
	public List<Recibo> buscarInformeAlumnoPorDni(String documentoIdentidad) {
		List<Recibo> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_DOCIDENTIDAD(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, documentoIdentidad);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();

			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Recibo>();

			if (rs != null) {
				while (rs.next()) {

					Recibo recibo = new Recibo(rs.getString("dni_le"),
							rs.getString("alumno"), rs.getString("categoria"),
							rs.getString("seccion_actual"),
							rs.getString("nombre_alumno"),
							rs.getString("carrera"),
							rs.getString("nomcarrera"),
							rs.getString("institucion"),
							rs.getString("nominstitucion"),
							rs.getString("modalidad_ingreso"),
							rs.getString("convenio"),
							rs.getString("observaciones"),
							rs.getString("modalidad"));

					lista.add(recibo);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public List<Recibo> buscarInformeAlumnoPorCodigo(String codigo) {

		List<Recibo> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_CODIGOALUMNO(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, codigo);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();

			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Recibo>();

			if (rs != null) {
				while (rs.next()) {

					Recibo recibo = new Recibo(rs.getString("dni_le"),
							rs.getString("alumno"), rs.getString("categoria"),
							rs.getString("seccion_actual"),
							rs.getString("nombre_alumno"),
							rs.getString("carrera"),
							rs.getString("nomcarrera"),
							rs.getString("institucion"),
							rs.getString("nominstitucion"),
							rs.getString("modalidad_ingreso"),
							rs.getString("convenio"),
							rs.getString("observaciones"),
							rs.getString("modalidad"));

					lista.add(recibo);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public List<Obligaciones> buscarObligacionesPorCodigo(String codigoAlumno) {

		List<Obligaciones> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_OBLIGACIONES(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, codigoAlumno);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();
			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Obligaciones>();

			if (rs != null) {
				while (rs.next()) {

					Obligaciones obligaciones = new Obligaciones(
							rs.getString("alumno"), rs.getString("pago"),
							rs.getString("periodo"), rs.getString("concepto_clasificacion"),
							rs.getString("descripcion_concepto"),
							rs.getString("fechavencimiento"),
							rs.getString("fecha_pago"), rs.getString("monto"),
							rs.getString("n_cuota"), rs.getString("mes"),
							rs.getString("cat_pago"), rs.getString("serie"),
							rs.getString("n_recibo"), rs.getString("seccion"),
							rs.getString("sede"), rs.getString("carrera"),
							rs.getString("persona"));

					lista.add(obligaciones);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public List<Historico> buscarHistoricosPorCodigo(String codigoAlumno) {

		List<Historico> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_PAGOSHISTORICOS(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, codigoAlumno);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();
			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Historico>();

			if (rs != null) {
				while (rs.next()) {

					Historico historico = new Historico(rs.getString("alumno"),
							rs.getString("institucion"),
							rs.getString("descripcion"),
							rs.getString("fecha_pago"),
							rs.getString("concepto_codigo"),
							rs.getString("concepto_descripcion"),
							rs.getString("itemcodigo"),
							rs.getString("periodo"), rs.getString("cuota"),
							rs.getString("seccion"), rs.getString("mes"),
							rs.getString("carrera"), rs.getString("subtotal"),
							rs.getString("cant"), rs.getString("descuento"),
							rs.getString("igv"), rs.getString("total"),
							rs.getString("documento"), rs.getString("sede"),
							rs.getString("lugar_pago"),
							rs.getString("usuario"), rs.getString("n_recibo"),
							rs.getString("n_serie"));

					lista.add(historico);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public List<Academica> buscarSituacionAcademicaPorCodigo(String codigoAlumno) {

		List<Academica> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_SITUACIONACADEMICA(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, codigoAlumno);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();
			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Academica>();

			if (rs != null) {
				while (rs.next()) {

					Academica academica = new Academica(rs.getString("alumno"),
							rs.getString("semestre"), rs.getString("p_mini"),
							rs.getString("mes"), rs.getString("carrera"),
							rs.getString("seccion"), rs.getString("promedio"),
							rs.getString("categoria"), rs.getString("estado"),
							rs.getString("cred_mat"), rs.getString("c_despro"),
							rs.getString("c_aprob"), rs.getString("c_matr"),
							rs.getString("observaciones"));

					lista.add(academica);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public String buscarFechaHora() {

		String result = "";
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.FUNC_DIAHORA()}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.registerOutParameter(1, OracleTypes.VARCHAR);
			callableStatement.execute();
			result = callableStatement.getString(1);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return result;

	}

	public String buscarCodigoSede(String nombreUsuario) {

		String result = "";
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.FUNC_CODIGOSEDE(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, nombreUsuario);
			callableStatement.registerOutParameter(1, OracleTypes.VARCHAR);
			callableStatement.execute();
			result = callableStatement.getString(1);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return result;

	}

	public String buscarNumeroDocumento(String codigoUsuario,
			String codigoTerminal, String codigoInstitucion,
			String tipoDocumento, String codigoAlumno) {

		String result = "";
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_NRODOCUMENTO(?,?,?,?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, codigoUsuario);
			callableStatement.setString(3, codigoInstitucion);
			callableStatement.setString(4, tipoDocumento);
			callableStatement.setString(5, codigoAlumno);

			callableStatement.registerOutParameter(1, OracleTypes.VARCHAR);
			callableStatement.execute();
			result = callableStatement.getString(1);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return result;

	}

	public List<Entidad> buscarLugarPago() {

		List<Entidad> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_LUGARPAGO()}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();
			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Entidad>();

			if (rs != null) {
				while (rs.next()) {
					Entidad entidad = new Entidad(rs.getString(1),
							rs.getString(2));

					lista.add(entidad);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public List<Entidad> buscarInstitucion() {

		List<Entidad> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_INSTITUCION()}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();
			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Entidad>();

			if (rs != null) {
				while (rs.next()) {
					Entidad entidad = new Entidad(rs.getString(1),
							rs.getString(2));

					lista.add(entidad);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public List<Entidad> buscarTipoDocumento() {

		List<Entidad> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_TIPODOCUMENTO()}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();
			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Entidad>();

			if (rs != null) {
				while (rs.next()) {
					Entidad entidad = new Entidad(rs.getString(1),
							rs.getString(2));

					lista.add(entidad);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public List<Entidad> buscarMoneda() {

		List<Entidad> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_MONEDAMAST()}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();
			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Entidad>();
			if (rs != null) {
				while (rs.next()) {
					Entidad entidad = new Entidad(rs.getString(1),
							rs.getString(2));
					lista.add(entidad);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public BigDecimal buscarTipoCambio(String moneda) {

		BigDecimal result = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.FUNC_TIPOCAMBIO(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, moneda);
			callableStatement.registerOutParameter(1, OracleTypes.NUMBER);
			callableStatement.execute();
			result = callableStatement.getBigDecimal(1);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return result;

	}

	public String buscarRuc(String codigoAlumno) {

		String result = "";
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.FUNC_NUMERORUC(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, codigoAlumno);
			callableStatement.registerOutParameter(1, OracleTypes.VARCHAR);
			callableStatement.execute();
			result = callableStatement.getString(1);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return result;

	}

	public BigDecimal buscarPrecios(String codigoInstitucion,String codigoClasificacion,String moneda,String codidoAlumno) {

		BigDecimal result = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_PRECIOS(?,?,?,?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, codigoInstitucion);
			callableStatement.setString(3, codigoClasificacion);
			callableStatement.setString(4, moneda);
			callableStatement.setString(5, codidoAlumno);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();

			rs = (ResultSet) callableStatement.getObject(1);

			

			if (rs != null) {
				while (rs.next()) {
					result = rs.getBigDecimal(1);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return result;

	}

	@Override
	public List<Entidad> buscarPeriodos(String codigoAlumno) {

		List<Entidad> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_PERIODOSACTIVOS(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, codigoAlumno);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();
			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Entidad>();

			if (rs != null) {
				while (rs.next()) {
					Entidad entidad = new Entidad(rs.getString(1),
							rs.getString(2));
					lista.add(entidad);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public String generarObligaciones(String codigoAlumno,
			String codigoUsuario, String periodo) {
		// TODO Auto-generated method stub

		String resultado = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.FUNC_VERIFICA_OBLIG(?,?,?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.registerOutParameter(1, OracleTypes.VARCHAR);
			callableStatement.setString(2, codigoAlumno);
			callableStatement.setString(3, codigoUsuario);
			callableStatement.setString(4, periodo);

			callableStatement.execute();
			resultado = callableStatement.getString(1);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return resultado;

	}
	
	public List<Concepto> buscarConceptos(String codigoIntitucion) {
		// TODO Auto-generated method stub

		List<Concepto> lista = new ArrayList<Concepto>();

		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_SERVICIOS(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.setString(2, codigoIntitucion);

			callableStatement.execute();
			rs = (ResultSet) callableStatement.getObject(1);

			if (rs != null) {
				while (rs.next()) {
					Concepto concepto = new Concepto(rs.getString(1),
							rs.getString(2), rs.getString(3), rs.getString(4));
					lista.add(concepto);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}

	public String buscarLogin(String usuario, String clave) {
		String mensaje = null;
		try {

			String getDBUSERByUserIdSql = "{call UP100.PKG_EVIRTUAL_SERVICIOS.PROC_LOGIN_USUARIO(?,?,?,?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(1, usuario);
			callableStatement.setString(2, clave);
			callableStatement.registerOutParameter(3, OracleTypes.VARCHAR);
			callableStatement.registerOutParameter(4, OracleTypes.VARCHAR);
			callableStatement.executeUpdate();
			mensaje = callableStatement.getString(4);
			clave = callableStatement.getString(3);
			mensaje = mensaje + "#" + clave;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (callableStatement != null) {
				try {
					callableStatement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

		}
		return mensaje;

	}
	
	

	public List<Notas> buscarNotas(String codigoAlumno) {
		List<Notas> lista = null;
		try {

			String getDBUSERByUserIdSql = "{? = call UP100.PKG_EVIRTUAL_SERVICIOS.SEL_NOTAS(?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(2, codigoAlumno);
			callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
			callableStatement.execute();

			rs = (ResultSet) callableStatement.getObject(1);

			lista = new ArrayList<Notas>();

			if (rs != null) {
				while (rs.next()) {

					Notas nota = new Notas(rs.getString(1),
							rs.getString(2), rs.getString(3),
							rs.getString(4),
							rs.getString(5),
							rs.getString(6),
							rs.getString(7),
							rs.getString(8),
							rs.getString(9),
							rs.getString(10),
							rs.getString(11),
							rs.getString(12),
							rs.getString(13),
							rs.getString(14),
							rs.getString(15),
							rs.getString(16));

					lista.add(nota);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (callableStatement != null) {
					callableStatement.close();
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return lista;

	}
	
	public String guardarDetalle(String codidoInstitucion,
			String lugarPago, String codigoUsuario, String tipoDocumento, String numeroDocumento,
			String ruc,	String monedaDocumento, String tipoDeCambio, String codigoAlumno,			
			String ultimoSsuario, String linea,
			String servicioClasificacion, String numeroCuota,
			String periodoPago, String cantidad, String precio,
			String descuento, String subTotal,int items) throws Exception {

		System.out.println("P_INSTITUCION " + codidoInstitucion);		
		System.out.println("P_LUGARPAGO " + lugarPago);		
		System.out.println("P_CODIGO_USUARIO " + codigoUsuario);
		System.out.println("P_TIPODOCUMENTO " + tipoDocumento);
		System.out.println("P_NRODOCUMENTO " + numeroDocumento);		
		System.out.println("P_CLIENTERUC " + ruc);		
		System.out.println("P_MONEDADOCUMENTO " + monedaDocumento);
		System.out.println("P_TIPODECAMBIO " + tipoDeCambio);
		System.out.println("P_CODIGO_ALUMNO " + codigoAlumno);				
		System.out.println("P_ULTIMOUSUARIO " + ultimoSsuario);				
		System.out.println("P_LINEA " + linea);
		System.out.println("P_SERVICIOCLASIFICACION " + servicioClasificacion);
		System.out.println("P_NUMEROCUOTA " + numeroCuota);
		System.out.println("P_PERIODOPAGO " + periodoPago);
		System.out.println("P_CANTIDAD " + cantidad);
		System.out.println("P_PRECIO " + precio);
		System.out.println("P_DESCUENTO " + descuento);
		System.out.println("P_SUBTOTAL " + subTotal);
		System.out.println("PN_ITEMS " + items);
				String retorna = null;
		try {
			
			String getDBUSERByUserIdSql = "{call UP100.PKG_EVIRTUAL_SERVICIOS.PROC_INS_DOCUMENTOS_SPR(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
			callableStatement = getConexion().prepareCall(getDBUSERByUserIdSql);
			callableStatement.setString(1,codidoInstitucion);			
			callableStatement.setString(2,lugarPago);			
			callableStatement.setString(3,codigoUsuario);
			callableStatement.setString(4,tipoDocumento);
			callableStatement.setString(5,numeroDocumento);
			callableStatement.setString(6,ruc);			
			callableStatement.setString(7,monedaDocumento);
			callableStatement.setString(8,tipoDeCambio);
			callableStatement.setString(9,codigoAlumno);							
			callableStatement.setString(10,ultimoSsuario);
			callableStatement.setString(11,linea);
			callableStatement.setString(12,servicioClasificacion);
			callableStatement.setString(13,numeroCuota);
			callableStatement.setString(14,periodoPago);
			callableStatement.setString(15,cantidad);
			callableStatement.setString(16,precio);
			callableStatement.setString(17,descuento);
			callableStatement.setString(18,subTotal);
			callableStatement.setInt(19,items);
			
			callableStatement.registerOutParameter(20,OracleTypes.NUMBER);
			callableStatement.registerOutParameter(21,OracleTypes.VARCHAR);
			callableStatement.registerOutParameter(22,OracleTypes.VARCHAR);
			callableStatement.executeUpdate();
			retorna = callableStatement.getString(20);
			System.out.println("retorno " + retorna ); 

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}

		return retorna;

	}
}
